package l.l.w.CodingInterviews;

/**
 * Created by llw on 2018/4/9/0009.
 */
public class 扑克牌顺子 {
    public boolean isContinuous(int [] numbers) {
        if(numbers == null || numbers.length < 5) return false;    //牌数小于 5的话 输入错误
        int[] cards = new int[14];
        int min = Integer.MAX_VALUE;
        int max = 0;
        for(int i = 0; i < numbers.length; ++i){
            if(numbers[i] > 13 || numbers[i] < 0) return false;
            if(cards[numbers[i]] != 0 && numbers[i] != 0){   //如果不是大小王，而且重复出现，则肯定不是顺子
                return false;
            }else{
                cards[numbers[i]] = cards[numbers[i]] + 1;    //该牌出现次数加1
            }
            if(numbers[i] != 0 && numbers[i] < min) min = numbers[i];            //更新最小值和最大值
            if(numbers[i] > max) max = numbers[i];
        }
        if(max - min + 1 <= 5){    //如果最大值和最小值之间的牌数小于5，因为除了王，没有重复，所以肯定可以构成顺子
            return true;
        }else{                //如果最大值和最小值之间的牌数超过5，则不可能是顺子
            return false;
        }
    }

    public static void main(String[] args) {
        int[] numbers = {0,3,2,6,4};
        boolean result = new 扑克牌顺子().isContinuous(numbers);
        System.out.println(result);

    }
}
